package com.binhthuan.catechist.server.domain;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

import com.google.gson.annotations.Expose;

/**
 * @author Giang Đinh - Chi tiết lịch học, tương ứng với bảng
 *         <b>ec_plan_detail</b> trong cơ sở dữ liệu.
 */
@Entity
@Table(name = "ec_plan_detail")
public class PlanDetail extends AbstractObject {

    /**
     * Mã chi tiết.
     */
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id")
    @Expose
    private Integer id;
    
    /**
     * Ngày học.
     */
    @ManyToOne
    @JoinColumn(name = "date_id")
    @Expose
    private Date date;
    
    /**
     * Nội dung.
     */
    @Column(name = "content", length = 100)
    @Expose
    private String content;
    
    /**
     * Bảng kế hoạch.
     */
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "plan_id")
    @Expose
    private Plan plan;
    
    /**
     * Ghi chú.
     */
    @Column(name = "comment", length = 255)
    @Expose
    private String comment;

    public PlanDetail() {
        
    }
    
    /**
     * Lấy mã chi tiết.
     * @return Mã chi tiết.
     */
    public Integer getId() {
        return id;
    }

    /**
     * Gán mã chi tiết.
     * @param id
     *            Mã chi tiết.
     */
    public void setId(Integer id) {
        this.id = id;
    }

    /**
     * Lấy ngày học.
     * @return Ngày học.
     */
    public Date getDate() {
        return date;
    }

    /**
     * Gán ngày học.
     * @param day
     *            Ngày học.
     */
    public void setDate(Date date) {
        this.date = date;
    }

    /**
     * Lấy nội dung.
     * @return Nội dung.
     */
    public String getContent() {
        return content;
    }

    /**
     * Gán nội dung.
     * @param content
     *            Nội dung.
     */
    public void setContent(String content) {
        this.content = content;
    }

    /**
     * Lấy bảng kế hoạch.
     * @return Bảng kế hoạch.
     */
    public Plan getPlan() {
        return plan;
    }

    /**
     * Gán bảng kế hoạch.
     * @param plan
     *            Bảng kế hoạch.
     */
    public void setPlan(Plan plan) {
        this.plan = plan;
    }

    /**
     * Lấy ghi chú.
     * @return Ghi chú.
     */
    public String getComment() {
        return comment;
    }

    /**
     * Gán ghi chú.
     * @param comment
     *            Ghi chú.
     */
    public void setComment(String comment) {
        this.comment = comment;
    }
}
